<?php

namespace app\common\library;
/**
 * Notes:按日期统计对日期的处理
 * Class HandleDateFormat
 * @package app\common\library
 */
class HandleDateFormat
{
    /**
     * 日期统计
     * 按天计算类型 不考虑跨月、跨年处理
     * 小于一天的按小时统计
     * 大于一天小于31天的按天统计
     * 大于31天小于一年的按月统计
     * 大于1年的按年统计
     */
    public static function presetList($start_date, $end_date)
    {
        $days = bcdiv(abs(strtotime($end_date) - strtotime($start_date))??0, 60 * 60 * 24,2);
        //按天计算类型 不考虑跨月、跨年处理
        if ($days <= 1) {
            $format          = 'm-d H';
            $date_format     = '%m-%d %H';
            $date_format_fix = '时';
            $temp            = '+1 hours';
        } else if($days <= 31) {
            $format      = 'Y-m-d';
            $date_format = '%Y-%m-%d';
            $temp        = '+1 day';
        } else if($days <= 366) {
            $format      = 'Y-m';
            $date_format = '%Y-%m';
            $temp        = '+1 month';
        } else {
            $format          = 'Y';
            $date_format     = '%Y';
            $date_format_fix = '年';
            $temp            = '+1 year';
        }
        $preset_list = [];
        $temp_date   = strtotime($start_date);
        while ($temp_date <= strtotime($end_date)) {
            $preset_list[] = [
                'date' => date($format, $temp_date),
            ];
            $temp_date = strtotime($temp, $temp_date);
        }
        return ['date_format' => $date_format, 'preset_list' => $preset_list, 'date_format_fix' => $date_format_fix ?? ""];
    }

}